home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / ai / gaf200b / example / heattank.fbk next >
Text File  |  1994-09-25  |  3KB  |  105 lines

  1. !--------------------------------------------------------
  2. ! Water tank heat control simulated feedback
  3. ! Assume constant volume (i.e. water in = water out)
  4. !--------------------------------------------------------
  5.  
  6. FEEDBACK TankTempFdbk
  7.  
  8. CYCLE_TIME    1.0
  9.  
  10. !     Name          (MIN,   MAX)
  11. IN    Water_out     (0.0, 1.0)
  12. IN    Gas_valve     (0.0, 10.0)
  13. IN    TempWaterIn   (32, 212)
  14. INOUT Temperature   (32.0, 212.0)
  15. LOCAL Water_out_old (0.0, 1.0)
  16. LOCAL Gas_valve_old (0.0, 10.0)
  17. LOCAL EU_in         (0, 100)
  18. OUT   EU_out        (0, 100)
  19. OUT   EU_gain       (-100, 100)
  20. LOCAL EU_acc        (-100, 100)
  21.  
  22. Initialization
  23.     Temperature = 72;
  24.     Water_out_old = Water_out;
  25.     Gas_valve_old = Gas_valve;
  26.     EU_gain = 0;
  27.     EU_acc = 0;
  28. PRE_PROCESSING
  29.     EU_out = ( Temperature - TempWaterIn ) * DELTA_TIME
  30.                 * ( Water_out + Water_out_old ) / 2 ;
  31.     EU_in  = 10 * DELTA_TIME * ( Gas_valve + Gas_valve_old ) / 2 ;
  32.     Water_out_old = Water_out;
  33.     Gas_valve_old = Gas_valve;
  34. POST_PROCESSING
  35.     EU_gain = EU_in - EU_out ;
  36.     IF ( EU_gain > -1 ) AND ( EU_gain < 1 ) THEN
  37.         EU_acc = EU_gain + EU_acc;
  38.         IF ( EU_acc > 1 ) OR ( EU_acc < -1 ) THEN
  39.             EU_gain = EU_acc;
  40.             EU_acc = 0;
  41.         ELSE
  42.             EU_gain = 0;
  43.         ENDIF;
  44.     ENDIF;
  45.     Temperature = Temperature + EU_gain / 100 ;
  46. END;
  47.  
  48. PRESET ! 1
  49.     Temperature = 72;
  50. END;
  51.  
  52. PRESET ! 2
  53.     Temperature = 72;
  54. END;
  55.  
  56. PRESET ! 3
  57.     Temperature = 72;
  58. END;
  59.  
  60. PRESET ! 4
  61.     Temperature = 72;
  62. END;
  63.  
  64. PRESET ! 5
  65.     Temperature = 72;
  66. END;
  67.  
  68. !        Name                     Below    Low   High  Above  Truth
  69. Symbol   Zero        OF Water_out (  0.0,   0.0,   0.0,   0.2,  1.0)
  70. Symbol   Light       OF Water_out (  0.0,   0.2,   0.2,   0.4,  1.0)
  71. Symbol   Medium      OF Water_out (  0.2,   0.4,   0.4,   0.6,  1.0)
  72. Symbol   Heavy       OF Water_out (  0.4,   0.6,   0.6,   0.8,  1.0)
  73. Symbol   VeryHeavy   OF Water_out (  0.6,   0.8,   1.0,   1.0,  1.0)
  74.  
  75. !        Name                    Below    Low   High  Above  Truth   Center
  76. Symbol   Off       OF Gas_valve (  0.0,   0.0,   0.0,   2.0,   1.0,   0.0)
  77. Symbol   VeryLow   OF Gas_valve (  0.0,   2.0,   2.0,   4.0,   1.0)
  78. Symbol   Low       OF Gas_valve (  2.0,   4.0,   4.0,   6.0,   1.0)
  79. Symbol   High      OF Gas_valve (  4.0,   6.0,   6.0,   8.0,   1.0)
  80. Symbol   VeryHigh  OF Gas_valve (  6.0,   8.0,  10.0,  10.0,   1.0,  10.0)
  81.  
  82. !        Name                     Below    Low   High  Above  Truth
  83. Symbol   VeryCold   OF Temperature(  32,    32,    62,    92,   1.0)
  84. Symbol   Cold       OF Temperature(  62,    92,    92,   122,   1.0)
  85. Symbol   Warm       OF Temperature(  92,   122,   122,   152,   1.0)
  86. Symbol   Hot        OF Temperature( 122,   152,   152,   182,   1.0)
  87. Symbol   VeryHot    OF Temperature( 152,   182,   212,   212,   1.0)
  88.  
  89.  
  90.  
  91. IF Temperature IS VeryHot ! AND Water_out IS VeryHeavy
  92. THEN EU_out + 2.5
  93.  
  94. IF Temperature IS Hot ! AND Water_out IS VeryHeavy
  95. THEN EU_out + 2
  96.  
  97. IF Temperature IS Warm ! AND Water_out IS VeryHeavy
  98. THEN EU_out + 1.5
  99.  
  100. IF Temperature IS Cold ! AND Water_out IS VeryHeavy
  101. THEN EU_out + 1
  102.  
  103.  
  104. END TankTempFdbk;
  105.